package com.epoint.utils;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;

public class RequestUtils {

	/**
	 * 通过反射获取本类中的方法
	 * @param requestMethod 方法名
	 * @param request 请求
	 * @param fullName 全路径名
	 * @return 结果
	 */
	public static String reflectInvokMethod(String requestMethod, HttpServletRequest request, Class<?> clazz) {
	    if (ObjectUtil.isNull(clazz)) {
	        return "找不到反射类名";
	    }
		Class<?> targetClass  = clazz;
		Method targetMethod = null;
		try {
			// 匹配目标方法
			for(Method method : targetClass .getMethods()) {
				if (StrUtil.equals(method.getName(), requestMethod)) {
					targetMethod = method;
				}
			}
			// 创建目标类的实例
			Object targetInstance =  targetClass.newInstance();
            // 调用匹配的方法
            if (targetMethod != null) {
                String json = (String) targetMethod.invoke(targetInstance, request);
                // 返回结果
               return json;
            }
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("通过反射获取本类中的方法，错误！！");
		}
		return null;
	}
}
